1. Field
The present disclosure relates generally to a server system and, in particular, to a server system in communication with both data providers and clients. Still more particularly, the present disclosure relates to a server system capable of responding to concurrent requests for data from clients by serving the data to the clients according to policies requested by the clients.
2. Background
Different types of servers and groups of servers may be used to provide data to client applications. The data hosted on a particular server may be received from any number of sources of data. For example, one or more servers may be used to host data acquired from a flight data recorder and acquisition system onboard an aircraft during flight. These one or more servers may include any number of live servers, historical servers, live/historical servers, and/or other types of servers.
As used herein, a “live server” is a server that is only capable of providing live data to client applications. Live data, which may also be referred to as real-time data, may be data that is delivered to a client application substantially immediately after the data has been generated or collected. For example, a live server hosting data acquired from a flight data recorder may be capable of serving this data to a client application as the data is recorded by the flight data recorder without any significant time delays or processing delays.
A “historical server,” as used herein, is a server that is only capable of providing historical data, or delayed data, to client applications. For example, a historical server may receive temperature measurements from a weather monitoring system. Upon request for these temperature measurements by a client application, the historical server may provide the temperature measurements to a client application after a 30 minute delay.
As used herein, a “live/historical server” is a server that is capable of concurrently providing both live data and historical data to a client application. A live/historical server may receive live data and be able to store the live data as historical data. The live/historical server may be capable of serving the live data to a client application as the live data is received or serving the historical data to the client application, depending on the particular request made by the client application.
Testing systems, monitoring systems, health information monitoring systems, and/or other types of data collection and analysis systems may use any combination of live servers, historical servers, live/historical servers, and/or other types of servers to service client applications with data. However, some currently available servers may be unable to provide data to multiple client applications concurrently in a manner selected by the client applications as quickly and/or efficiently as desired. For example, some currently available servers may be unable to respond to concurrent requests for both live data and historical data as quickly and/or efficiently as desired.
Further, in some cases, data streams may be received at a server asynchronously. For example, one data stream may be received at a server at one data rate, while another data stream may be received at the server at another data rate that varies over time. Some currently available live/historical data servers may synchronize data that was received asynchronously based on the time indicated by a clock, internal or external to the live/historical data servers. In other words, these data servers may be unable to preserve the timestamps originally associated with the data.
Further, these currently available live/historical data servers may be unable to handle requests from clients requesting that the data be sent to the clients at client-specified data rates. Additionally, some currently available live/historical systems may not be scalable or distributable across multiple pieces of differing hardware. Therefore, it would be desirable to have a method and apparatus that take into account at least some of the issues discussed above, as well as other possible issues.